home *** CD-ROM | disk | FTP | other *** search
/ Software of the Month Club 2000 October / Software of the Month - Ultimate Collection Shareware 277.iso / pc / PROGRAMS / UTILITY / WINLINUX / DATA1.CAB / programs_-_include / ASM-PPC / PAGE.H < prev    next >
C/C++ Source or Header  |  1999-09-17  |  2KB  |  87 lines

  1. #include <linux/config.h>
  2.  
  3. #ifndef _PPC_PAGE_H
  4. #define _PPC_PAGE_H
  5.  
  6. /* PAGE_SHIFT determines the page size */
  7. #define PAGE_SHIFT    12
  8. #define PAGE_SIZE    (1UL << PAGE_SHIFT)
  9. #define PAGE_MASK    (~(PAGE_SIZE-1))
  10.  
  11. #define PAGE_OFFSET    0xc0000000
  12.  
  13.  
  14. #ifndef __ASSEMBLY__
  15. #ifdef __KERNEL__
  16.  
  17. #define STRICT_MM_TYPECHECKS
  18.  
  19. #ifdef STRICT_MM_TYPECHECKS
  20. /*
  21.  * These are used to make use of C type-checking..
  22.  */
  23. typedef struct { unsigned long pte; } pte_t;
  24. typedef struct { unsigned long pmd; } pmd_t;
  25. typedef struct { unsigned long pgd; } pgd_t;
  26. typedef struct { unsigned long pgprot; } pgprot_t;
  27.  
  28. #define pte_val(x)    ((x).pte)
  29. #define pmd_val(x)    ((x).pmd)
  30. #define pgd_val(x)    ((x).pgd)
  31. #define pgprot_val(x)    ((x).pgprot)
  32.  
  33. #define __pte(x)    ((pte_t) { (x) } )
  34. #define __pmd(x)    ((pmd_t) { (x) } )
  35. #define __pgd(x)    ((pgd_t) { (x) } )
  36. #define __pgprot(x)    ((pgprot_t) { (x) } )
  37.  
  38. #else
  39. /*
  40.  * .. while these make it easier on the compiler
  41.  */
  42. typedef unsigned long pte_t;
  43. typedef unsigned long pmd_t;
  44. typedef unsigned long pgd_t;
  45. typedef unsigned long pgprot_t;
  46.  
  47. #define pte_val(x)    (x)
  48. #define pmd_val(x)    (x)
  49. #define pgd_val(x)    (x)
  50. #define pgprot_val(x)    (x)
  51.  
  52. #define __pte(x)    (x)
  53. #define __pmd(x)    (x)
  54. #define __pgd(x)    (x)
  55. #define __pgprot(x)    (x)
  56.  
  57. #endif
  58.  
  59.  
  60. /* align addr on a size boundry - adjust address up if needed -- Cort */
  61. #define _ALIGN(addr,size)    (((addr)+size-1)&(~(size-1)))
  62.  
  63. /* to align the pointer to the (next) page boundary */
  64. #define PAGE_ALIGN(addr)    (((addr)+PAGE_SIZE-1)&PAGE_MASK)
  65.  
  66. extern void clear_page(unsigned long page);
  67. #define copy_page(to,from)    memcpy((void *)(to), (void *)(from), PAGE_SIZE)
  68.  
  69. /* map phys->virtual and virtual->phys for RAM pages */
  70. #ifdef CONFIG_APUS
  71. #include <asm/amigappc.h>
  72. /* Word at CYBERBASEp has the value (-KERNELBASE+CYBERBASE). */
  73. #define __pa(x)            ((unsigned long)(x)+(*(unsigned long*)CYBERBASEp))
  74. #define __va(x)            ((void *)((unsigned long)(x)-(*(unsigned long*)CYBERBASEp)))
  75. #else
  76. #define __pa(x)            ((unsigned long)(x)-PAGE_OFFSET)
  77. #define __va(x)            ((void *)((unsigned long)(x)+PAGE_OFFSET))
  78. #endif
  79.  
  80. #define MAP_NR(addr)        (((unsigned long)addr-PAGE_OFFSET) >> PAGE_SHIFT)
  81. #define MAP_PAGE_RESERVED    (1<<15)
  82.  
  83. extern unsigned long get_zero_page_fast(void);
  84. #endif /* __KERNEL__ */
  85. #endif /* __ASSEMBLY__ */
  86. #endif /* _PPC_PAGE_H */
  87.